package com.justgame.project.service.just.service.basic;

import com.justgame.project.service.just.entity.JustGameComment;
import com.justgame.project.service.just.query.JustGameCommentQuery;
import com.justgame.project.service.just.wrapper.JustGameCommentWrapper;
import com.justgame.project.base.servcice.IBasicService;
import java.lang.Long;
import org.springframework.util.Assert;
import org.springframework.lang.NonNull;
import java.lang.Boolean;
import java.lang.String;

/**
 *
 * 游戏评论服务自定义查询类
 *
 * @@tableName just_game_comment
 * @author Zwb
 */
@SuppressWarnings("all")
public interface BasicJustGameCommentService extends IBasicService<JustGameCommentQuery,JustGameComment,JustGameCommentWrapper> {

   /**
    * 发表评论 - 楼主
    * @param gameInfoId 游戏信息
    * @param content 评论内容
    * @param isPixelate 是否匿名
    * @param isRemove 是否被显性删除
    * @param type 类型
    */
   default JustGameComment addLandlordComment(Long gameInfoId, String content, Boolean isPixelate){
      JustGameComment justGameComment = new JustGameComment();
      justGameComment.setGameInfoId(safeValue(gameInfoId, null));
      justGameComment.setContent(safeValue(content, null));
      justGameComment.setIsPixelate(safeValue(isPixelate, false));
      justGameComment.setIsRemove(false);
      justGameComment.setType(JustGameComment.Type.LANDLORD);
      save(justGameComment);
      return justGameComment;
   }

   /**
    * 新增创建
    * @param parentId 上级评论
    * @param ancestors 评论关联族谱
    * @param gameInfoId 游戏信息
    * @param content 评论内容
    * @param type 类型
    * @param isPixelate 是否匿名
    * @param isRemove 是否被显性删除
    */
   default JustGameComment baseAdd(Long parentId, String ancestors, Long gameInfoId, String content, JustGameComment.Type type, Boolean isPixelate, Boolean isRemove){
      JustGameComment justGameComment = new JustGameComment();
      justGameComment.setParentId(safeValue(parentId, null));
      justGameComment.setAncestors(safeValue(ancestors, null));
      justGameComment.setGameInfoId(safeValue(gameInfoId, null));
      justGameComment.setContent(safeValue(content, null));
      justGameComment.setType(safeValue(type, null));
      justGameComment.setIsPixelate(safeValue(isPixelate, null));
      justGameComment.setIsRemove(safeValue(isRemove, null));
      save(justGameComment);
      return justGameComment;
   }

   /**
    * 更新
    * @param parentId 上级评论
    * @param ancestors 评论关联族谱
    * @param gameInfoId 游戏信息
    * @param content 评论内容
    * @param type 类型
    * @param isPixelate 是否匿名
    * @param isRemove 是否被显性删除
    */
   default boolean baseUpdate(@NonNull JustGameComment justGameComment,Long parentId, String ancestors, Long gameInfoId, String content, JustGameComment.Type type, Boolean isPixelate, Boolean isRemove){
      Assert.notNull(isRemove,"必须提供是否被显性删除");
      Assert.notNull(content,"必须提供评论内容");
      Assert.notNull(parentId,"必须提供上级评论");
      Assert.notNull(ancestors,"必须提供评论关联族谱");
      Assert.notNull(type,"必须提供类型");
      Assert.notNull(isPixelate,"必须提供是否匿名");
      Assert.notNull(gameInfoId,"必须提供游戏信息");
      Assert.notNull(justGameComment.getId(),"必须提供主键ID");
      justGameComment.setParentId(safeValue(parentId, null));
      justGameComment.setAncestors(safeValue(ancestors, null));
      justGameComment.setGameInfoId(safeValue(gameInfoId, null));
      justGameComment.setContent(safeValue(content, null));
      justGameComment.setType(safeValue(type, null));
      justGameComment.setIsPixelate(safeValue(isPixelate, null));
      justGameComment.setIsRemove(safeValue(isRemove, null));
      return updateById(justGameComment);
   }

}